#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H

#include <QDialog>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QFormLayout>

class LoginDialog : public QDialog
{
    Q_OBJECT

public:
    explicit LoginDialog(QWidget *parent = nullptr);
    ~LoginDialog();

    // 获取用户名
    QString getUsername() const;
    
    // 获取密码
    QString getPassword() const;
    
    // 获取确认密码
    QString getConfirmPassword() const;
    
    // 设置登录状态（成功/失败）
    void setLoginStatus(bool success, const QString& message);
    
    // 显示错误信息
    void showError(const QString& error);

signals:
    // 登录信号
    void loginRequested(const QString& username, const QString& password);
    
    // 注册信号
    void registerRequested(const QString& username, const QString& password);

private slots:
    // 登录按钮点击处理
    void onLoginClicked();
    
    // 注册按钮点击处理
    void onRegisterClicked();
    
    // 切换登录/注册模式
    void onModeChanged();

private:
    // 初始化UI
    void setupUI();
    
    // 初始化信号槽连接
    void setupConnections();
    
    // 验证输入
    bool validateInput() const;
    
    QLineEdit *usernameLineEdit;
    QLineEdit *passwordLineEdit;
    QLineEdit *confirmPasswordLineEdit;
    QPushButton *loginButton;
    QPushButton *registerButton;
    QPushButton *modeSwitchButton;
    QLabel *statusLabel;
    QFormLayout *formLayout;
    bool isRegisterMode;
};

#endif // LOGINDIALOG_H